package com.junko.service.back.impl;

import com.junko.core.base.BaseServiceImpl;
import com.junko.dao.back.ModuleDao;
import com.junko.model.back.Module;
import com.junko.model.back.ZtreeNode;
import com.junko.service.back.IModuleService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ModuleService extends BaseServiceImpl<Module> implements IModuleService {
    @Autowired
    private ModuleDao moduleDao;

    @Override
    public List<Module> findTopParentsBySystemId(Integer systemId) {
        return moduleDao.findTopParentsBySystemId(systemId);
    }

    @Override
    public List<Module> findChild(Integer parentId) {
        return moduleDao.findByParentId(parentId);
    }

    @Override
    public List<ZtreeNode> childNodeData(String systemId, Integer parentId){
        return moduleDao.childNodeData(systemId,parentId);
    }

    @Override
    public Integer save(Integer pId, String name, int orderId){
        Module pModule = moduleDao.selectByPrimaryKey(pId);
        moduleDao.updateByPrimaryKeySelective(pModule);
        Module module = new Module();
        module.setParentId(pId);
        module.setOrderNo(orderId);
        module.setName(name);
        module.setSystemId(pModule.getSystemId());
        moduleDao.insertSelective(module);
        return module.getId();
    }

    @Override
    public boolean update(Integer id, Integer pId, String name){
        Module module = moduleDao.selectByPrimaryKey(id);
        //更新上级模块
        if(pId!=null){
            module.setParentId(pId);
        }
        if(StringUtils.isNotBlank(name)){
            module.setName(name);
        }
        return moduleDao.updateByPrimaryKeySelective(module)==1;
    }

    @Override
    public boolean delete(Integer id) {
        // 是否存在子节点
        if(CollectionUtils.isNotEmpty(findChild(id))){
            return false;
        }
        // 删除
        return moduleDao.deleteByPrimaryKey(id)==1;
    }

}